#ifndef LISTEVAISSE_H_
#define LISTEVAISSE_H_
#include "VaisseauE.h"
#include "Terrain.h"

struct CelluleVaissE
{
        VaisseauEnnemi* vaiss;
        struct CelluleVaissE* vaisSuiv;
        struct CelluleVaissE* vaisPrec;
};
typedef struct CelluleVaissE CelluleVaissE;

//liste chaînée contenant des vaisseaux ennemis
struct ListeVaissE
{
	CelluleVaissE * adPremiere;
	int nbCellule;
};
typedef struct ListeVaissE ListeVaissE;

// initialise la liste avec un vaisseau
void initListeVaissE(ListeVaissE *l, Terrain *ter);
void initListeVaissEN(ListeVaissE *l, Terrain *ter);

//ajoute un vaisseau en fin de liste
void ajouteVaissE(ListeVaissE *l, Terrain *ter, int posy);
void ajouteVaissEN(ListeVaissE *lVaissE,  Terrain *ter, int posy);
void ajouteVaissE2(ListeVaissE *lVaissE,  Terrain *ter, int posy);
void ajouteVaissE3(ListeVaissE *lVaissE,  Terrain *ter, int posy);
void ajouteVaissE4(ListeVaissE *lVaissE,  Terrain *ter, int posy);
void ajouteVaissE5(ListeVaissE *lVaissE,  Terrain *ter, int posx); // Attention position X en parametre au lieu de Y
void ajouteBoss1(ListeVaissE *lVaissE,  Terrain *ter, int posy);

//ajoute "nb" vaisseau a la liste
void nombreVaissE(ListeVaissE *l, Terrain *ter,int nb);

//on retourne la derniere cellule de la liste
CelluleVaissE finListe(ListeVaissE *);

//suppime la premiere cellule de la liste
void supprListeVaissE(ListeVaissE * l);

//vide toute les cellules de la liste
void videListeVaissE(ListeVaissE * l);

//libere la memoire
void testamentVaissE(ListeVaissE * l);

#endif
